package com.example.service;

import com.example.Ordermodule.OrderFactorym;
import com.example.Ordermodule.OrderItemm;
import com.example.Ordermodule.Orderm;
import com.example.entity.Product;
import com.example.entity.StandardItem;
import com.example.entity.StandardOrder;
import com.example.mapper.ProductDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDate;

@Component
public class StandardFactory implements OrderFactorym {
    @Resource
    private ProductDao productDao;
    // 通过构造器注入 ProductDao


    @Override
    public Orderm createOrder(Integer buyerId) {
        StandardOrder order = new StandardOrder();
        order.setOrderStatus("UNPAID");  // 默认订单状态
        order.setTotalPrice(BigDecimal.ZERO);  // 初始化总价
        order.setBuyerId(buyerId);
        order.setCreatedAt(LocalDate.now()); // 设置创建时间
        order.setUpdatedAt(LocalDate.now()); // 设置更新时间
        return order;
    }

    @Override
    public OrderItemm createItem(Integer productId, int quantity) {
        StandardItem item = new StandardItem();
        item.setProductId(productId);
        item.setQuantity(quantity);
        item.setPrice(fetchProductPrice(productId)); // 获取商品价格
        return item;
    }
    private BigDecimal fetchProductPrice(Integer productId) {
        // 使用 ProductDao 查询商品价格
        Product product = productDao.queryById(productId);
        return product != null ? BigDecimal.valueOf(product.getPrice()) : BigDecimal.ZERO; // 如果商品不存在，则返回0
    }
}
